#my-service make-file

SRV_NAME := server
CLT_NAME := client
INCLUDE_PATH := Include
INCLUDES := $(wildcard $(INCLUDE_PATH)/*.h)
SRV_PATH := Server
CLT_PATH := Client
SHR_PATH := Shared
SRV_SOURCE := $(wildcard $(SRV_PATH)/*.c)
CLT_SOURCE := $(wildcard $(CLT_PATH)/*.c)
SHR_SOURCE := $(wildcard $(SHR_PATH)/*.c)
SRV_OBJ := $(patsubst %.c, %.o, $(SRV_SOURCE)) 
CLT_OBJ := $(patsubst %.c, %.o, $(CLT_SOURCE)) 
SHR_OBJ := $(patsubst %.c, %.o, $(SHR_SOURCE)) 

all: $(SRV_NAME) $(CLT_NAME)

$(SRV_NAME): $(SRV_OBJ) $(SHR_OBJ)
	gcc -o $@ $^

$(CLT_NAME): $(CLT_OBJ) $(SHR_OBJ)
	gcc -o $@ $^

%.o: %.c $(INCLUDES)
	gcc -c -o $@ -I $(INCLUDE_PATH) $(filter %.c, $^)

clean: clean-obj
	@rm -f $(CLT_NAME) $(SRV_NAME)

clean-obj:
	@rm -f $(SRV_PATH)/*.o $(CLT_PATH)/*.o $(SHR_PATH)/*.o

run: run_server run_client

run_server:
	./$(SRV_NAME)&

run_client:
	./$(CLT_NAME)
